package com.foo.calidad.persist.eao;

import java.util.Collection;

public interface IOperacionesEAO<T> {

	/**
	 * Busca la entidad por su identificador
	 * 
	 * @param id
	 *            Identificador de la entidad
	 * @return Devuelve la entidad si existe
	 */
	T find(Long id);

	/**
	 * Crear una nueva entidad en la Base de datos con los datos pasados como
	 * parametro
	 * 
	 * @param entity
	 *            Entidad a crear en la BD
	 * @return Devuelve la entidad creada
	 */
	T create(T entity);

	/**
	 * Modifica los datos de una entidad con los datos pasados como parametro
	 * 
	 * @param entity
	 *            Entidad a modificar en la BD
	 * @return Devuelve la entidad modificada
	 */
	T update(T entity);

	/**
	 * Elimina la entidad por su identificador
	 * 
	 * @param id
	 *            Identificador de la entidad
	 */
	void delete(Long id);

	/**
	 * Devuelve las entidades que hay en la BD
	 * 
	 * @return Devuelve el conjunto de entidades almacenadas en la BD
	 */
	Collection<T> findAll();

}
